<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.9.0">
    

    

    



    <meta charset="utf-8">
    
    
    <meta name="sogou_site_verification" content="true">
    
    
    
    <title>搜索引擎选择:Elasticsearch与Solr | Lvshen&#39;s Blog | This is My World</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
    <meta name="theme-color" content="#3F51B5">
    
    
    <meta name="keywords" content="Elasticsearch,搜索">
    <meta name="baidu-site-verification" content="VIVNdSiMZm">
    <meta name="description" content="Elasticsearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索，结构化搜索以及分析，当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎，可以说Lucene是当今最先进，最高效的全功能开源搜索引擎框架。">
<meta name="keywords" content="Elasticsearch,搜索">
<meta property="og:type" content="article">
<meta property="og:title" content="搜索引擎选择:Elasticsearch与Solr">
<meta property="og:url" content="https://lvshen9.gitee.io/2017/08/22/my-first-blog/index.html">
<meta property="og:site_name" content="Lvshen&#39;s Blog">
<meta property="og:description" content="Elasticsearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索，结构化搜索以及分析，当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎，可以说Lucene是当今最先进，最高效的全功能开源搜索引擎框架。">
<meta property="og:locale" content="zh-CN">
<meta property="og:image" content="http://i.zhcy.tk/images/search_fresh_index_while_idle.png">
<meta property="og:image" content="http://i.zhcy.tk/images/search_fresh_index_while_indexing.png">
<meta property="og:image" content="http://i.zhcy.tk/images/search_fresh_index_while_indexing2.png">
<meta property="og:image" content="http://i.zhcy.tk/images/average_execution_time.jpg">
<meta property="og:updated_time" content="2017-08-22T02:57:58.822Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="搜索引擎选择:Elasticsearch与Solr">
<meta name="twitter:description" content="Elasticsearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索，结构化搜索以及分析，当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎，可以说Lucene是当今最先进，最高效的全功能开源搜索引擎框架。">
<meta name="twitter:image" content="http://i.zhcy.tk/images/search_fresh_index_while_idle.png">
    
    <link rel="shortcut icon" href="/img/mylogo.jpg">
    <link rel="stylesheet" href="//unpkg.com/hexo-theme-material-indigo@latest/css/style.css">
    <script>window.lazyScripts=[]</script>

    <!-- custom head -->
    

</head>

<body>
    <div id="loading" class="active"></div>

    <aside id="menu" class="hide" >
  <div class="inner flex-row-vertical">
    <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menu-off">
        <i class="icon icon-lg icon-close"></i>
    </a>
    <div class="brand-wrap" style="background-image:url(/img/brand.jpg)">
      <div class="brand">
        <a href="/" class="avatar waves-effect waves-circle waves-light">
          <img src="/img/avatar.jpg">
        </a>
        <hgroup class="introduce">
          <h5 class="nickname">我的技术小房间</h5>
          <a href="mailto:https://lvshen9.github.io" title="https://lvshen9.github.io" class="mail">https://lvshen9.github.io</a>
        </hgroup>
      </div>
    </div>
    <div class="scroll-wrap flex-col">
      <ul class="nav">
        
            <li class="waves-block waves-effect">
              <a href="/"  >
                <i class="icon icon-lg icon-home"></i>
                主页
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/archives"  >
                <i class="icon icon-lg icon-archives"></i>
                Archives
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/tags"  >
                <i class="icon icon-lg icon-tags"></i>
                Tags
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories"  >
                <i class="icon icon-lg icon-th-list"></i>
                Categories
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/about"  >
                <i class="icon icon-lg icon-address-book"></i>
                About
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/collection"  >
                <i class="icon icon-lg icon-apple"></i>
                Collection
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://lvshen9.github.io/" target="_blank" >
                <i class="icon icon-lg icon-wordpress"></i>
                Blog
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://github.com/lvshen9" target="_blank" >
                <i class="icon icon-lg icon-github-alt"></i>
                GitHub
              </a>
            </li>
        
      </ul>
    </div>
  </div>
</aside>

    <main id="main">
        <header class="top-header" id="header">
    <div class="flex-row">
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light on" id="menu-toggle">
          <i class="icon icon-lg icon-navicon"></i>
        </a>
        <div class="flex-col header-title ellipsis">搜索引擎选择:Elasticsearch与Solr</div>
        
        <div class="search-wrap" id="search-wrap">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="back">
                <i class="icon icon-lg icon-chevron-left"></i>
            </a>
            <input type="text" id="key" class="search-input" autocomplete="off" placeholder="输入感兴趣的关键字">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="search">
                <i class="icon icon-lg icon-search"></i>
            </a>
        </div>
        
        
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menuShare">
            <i class="icon icon-lg icon-share-alt"></i>
        </a>
        
    </div>
</header>
<header class="content-header post-header">

    <div class="container fade-scale">
        <h1 class="title">搜索引擎选择:Elasticsearch与Solr</h1>
        <h5 class="subtitle">
            
                <time datetime="2017-08-22T02:46:44.000Z" itemprop="datePublished" class="page-time">
  2017-08-22
</time>


	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/技术/">技术</a></li></ul>

            
        </h5>
    </div>

    


</header>


<div class="container body-wrap">
    
    <aside class="post-widget">
        <nav class="post-toc-wrap post-toc-shrink" id="post-toc">
            <h4>TOC</h4>
            <ol class="post-toc"><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Elasticsearch简介"><span class="post-toc-number">1.</span> <span class="post-toc-text">Elasticsearch简介</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Elasticsearch的优缺点"><span class="post-toc-number">2.</span> <span class="post-toc-text">Elasticsearch的优缺点</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#优点"><span class="post-toc-number">2.1.</span> <span class="post-toc-text">优点</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#缺点"><span class="post-toc-number">2.2.</span> <span class="post-toc-text">缺点</span></a></li></ol></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Solr简介"><span class="post-toc-number">3.</span> <span class="post-toc-text">Solr简介</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Solr的优缺点"><span class="post-toc-number">4.</span> <span class="post-toc-text">Solr的优缺点</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#优点-1"><span class="post-toc-number">4.1.</span> <span class="post-toc-text">优点</span></a></li><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#缺点-1"><span class="post-toc-number">4.2.</span> <span class="post-toc-text">缺点</span></a></li></ol></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Elasticsearch与Solr的比较"><span class="post-toc-number">5.</span> <span class="post-toc-text">Elasticsearch与Solr的比较*</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#实际生产环境测试"><span class="post-toc-number">6.</span> <span class="post-toc-text">实际生产环境测试*</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Elasticsearch-与-Solr-的比较总结"><span class="post-toc-number">7.</span> <span class="post-toc-text">Elasticsearch 与 Solr 的比较总结</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#其他基于Lucene的开源搜索引擎解决方案"><span class="post-toc-number">8.</span> <span class="post-toc-text">其他基于Lucene的开源搜索引擎解决方案</span></a></li></ol>
        </nav>
    </aside>


<article id="post-my-first-blog"
  class="post-article article-type-post fade" itemprop="blogPost">

    <div class="post-card">
        <h1 class="post-card-title">搜索引擎选择:Elasticsearch与Solr</h1>
        <div class="post-meta">
            <time class="post-time" title="2017-08-22 10:46:44" datetime="2017-08-22T02:46:44.000Z"  itemprop="datePublished">2017-08-22</time>

            
	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/技术/">技术</a></li></ul>



            
<span id="busuanzi_container_page_pv" title="文章总阅读量" style='display:none'>
    <i class="icon icon-eye icon-pr"></i><span id="busuanzi_value_page_pv"></span>
</span>


        </div>
        <div class="post-content" id="post-content" itemprop="postContent">
            <h2 id="Elasticsearch简介"><a href="#Elasticsearch简介" class="headerlink" title="Elasticsearch简介"></a>Elasticsearch简介</h2><p>Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。</p>
<p>它可以用于全文搜索，结构化搜索以及分析，当然你也可以将这三者进行组合。</p>
<p>Elasticsearch是一个建立在全文<a href="http://lib.csdn.net/base/searchengine" target="_blank" rel="noopener">搜索引擎</a> Apache Lucene™ 基础上的搜索引擎，可以说Lucene是当今最先进，最高效的全功能开源搜索引擎框架。</p>
<a id="more"></a>
<p>但是Lucene只是一个框架，要充分利用它的功能，需要使用<a href="http://lib.csdn.net/base/java" target="_blank" rel="noopener">Java</a>，并且在程序中集成Lucene。需要很多的学习了解，才能明白它是如何运行的，Lucene确实非常复杂。</p>
<p>Elasticsearch使用Lucene作为内部引擎，但是在使用它做全文搜索时，只需要使用统一开发好的API即可，而不需要了解其背后复杂的Lucene的运行原理。</p>
<p>当然Elasticsearch并不仅仅是Lucene这么简单，它不但包括了全文搜索功能，还可以进行以下工作:</p>
<ul>
<li>分布式实时文件存储，并将每一个字段都编入索引，使其可以被搜索。</li>
<li>实时分析的分布式搜索引擎。</li>
<li>可以扩展到上百台服务器，处理PB级别的结构化或非结构化数据。</li>
</ul>
<p>这么多的功能被集成到一台服务器上，你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。</p>
<p>Elasticsearch的上手是非常简单的。它附带了很多非常合理的默认值，这让初学者很好地避免一上手就要面对复杂的理论，</p>
<p>它安装好了就可以使用了，用很小的学习成本就可以变得很有生产力。</p>
<p>随着越学越深入，还可以利用Elasticsearch更多高级的功能，整个引擎可以很灵活地进行配置。可以根据自身需求来定制属于自己的Elasticsearch。</p>
<p>使用案例：</p>
<ul>
<li>维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词，以及提供search-as-you-type、did-you-mean等搜索建议功能。</li>
<li>英国卫报使用Elasticsearch来处理访客日志，以便能将公众对不同文章的反应实时地反馈给各位编辑。</li>
<li>StackOverflow将全文搜索与地理位置和相关信息进行结合，以提供more-like-this相关问题的展现。</li>
<li>GitHub使用Elasticsearch来检索超过1300亿行代码。</li>
<li>每天，Goldman Sachs使用它来处理5TB数据的索引，还有很多投行使用它来分析股票市场的变动。</li>
</ul>
<p>但是Elasticsearch并不只是面向大型企业的，它还帮助了很多类似DataDog以及Klout的创业公司进行了功能的扩展。</p>
<h2 id="Elasticsearch的优缺点"><a href="#Elasticsearch的优缺点" class="headerlink" title="Elasticsearch的优缺点"></a>Elasticsearch的优缺点</h2><h3 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h3><ol>
<li>Elasticsearch是分布式的。不需要其他组件，分发是实时的，被叫做”Push replication”。</li>
<li>Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。</li>
<li>处理多租户（<a href="http://en.wikipedia.org/wiki/Multitenancy" target="_blank" rel="noopener">multitenancy</a>）不需要特殊配置，而Solr则需要更多的高级设置。</li>
<li>Elasticsearch 采用 Gateway 的概念，使得完备份更加简单。</li>
<li>各节点组成对等的网络结构，某些节点出现故障时会自动分配其他节点代替其进行工作。</li>
</ol>
<h3 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h3><ol>
<li>只有一名开发者（当前Elasticsearch GitHub组织已经不只如此，已经有了相当活跃的维护者）</li>
<li>还不够自动（不适合当前新的Index Warmup API）</li>
</ol>
<h2 id="Solr简介"><a href="#Solr简介" class="headerlink" title="Solr简介"></a>Solr简介</h2><p>Solr（读作“solar”）是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、<a href="http://lib.csdn.net/base/mysql" target="_blank" rel="noopener">数据库</a>集成，以及富文本（如Word、PDF）的处理。Solr是高度可扩展的，并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎，Solr4 还增加了NoSQL支持。</p>
<p>Solr是用Java编写、运行在Servlet容器（如 Apache Tomcat 或Jetty）的一个独立的全文搜索服务器。 Solr采用了 Lucene Java 搜索库为核心的全文索引和搜索，并具有类似REST的HTTP/XML和JSON的API。Solr强大的外部配置功能使得无需进行Java编码，便可对其进行调整以适应多种类型的应用程序。Solr有一个插件<a href="http://lib.csdn.net/base/architecture" target="_blank" rel="noopener">架构</a>，以支持更多的高级定制。</p>
<p>因为2010年 Apache Lucene 和 Apache Solr 项目合并，两个项目是由同一个Apache软件基金会开发团队制作实现的。提到技术或产品时，Lucene/Solr或Solr/Lucene是一样的。</p>
<h2 id="Solr的优缺点"><a href="#Solr的优缺点" class="headerlink" title="Solr的优缺点"></a>Solr的优缺点</h2><h3 id="优点-1"><a href="#优点-1" class="headerlink" title="优点"></a>优点</h3><ol>
<li>Solr有一个更大、更成熟的用户、开发和贡献者社区。</li>
<li>支持添加多种格式的索引，如：HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。</li>
<li>Solr比较成熟、稳定。</li>
<li>不考虑建索引的同时进行搜索，速度更快。</li>
</ol>
<h3 id="缺点-1"><a href="#缺点-1" class="headerlink" title="缺点"></a>缺点</h3><ol>
<li>建立索引时，搜索效率下降，实时索引搜索效率不高。</li>
</ol>
<h2 id="Elasticsearch与Solr的比较"><a href="#Elasticsearch与Solr的比较" class="headerlink" title="Elasticsearch与Solr的比较*"></a>Elasticsearch与Solr的比较<a href="http://blog.socialcast.com/realtime-search-solr-vs-elasticsearch/" target="_blank" rel="noopener">*</a></h2><p>当单纯的对已有数据进行搜索时，Solr更快。</p>
<figure class="image-bubble">
                <div class="img-lightbox">
                    <div class="overlay"></div>
                    <img src="http://i.zhcy.tk/images/search_fresh_index_while_idle.png" alt="Search Fesh Index While Idle" title>
                </div>
                <div class="image-caption">Search Fesh Index While Idle</div>
            </figure>
<p>当实时建立索引时, Solr会产生io阻塞，查询性能较差, Elasticsearch具有明显的优势。</p>
<figure class="image-bubble">
                <div class="img-lightbox">
                    <div class="overlay"></div>
                    <img src="http://i.zhcy.tk/images/search_fresh_index_while_indexing.png" alt="search_fresh_index_while_indexing" title>
                </div>
                <div class="image-caption">search_fresh_index_while_indexing</div>
            </figure>
<p>随着数据量的增加，Solr的搜索效率会变得更低，而Elasticsearch却没有明显的变化。</p>
<figure class="image-bubble">
                <div class="img-lightbox">
                    <div class="overlay"></div>
                    <img src="http://i.zhcy.tk/images/search_fresh_index_while_indexing2.png" alt="search_fresh_index_while_indexing" title>
                </div>
                <div class="image-caption">search_fresh_index_while_indexing</div>
            </figure>
<p>综上所述，Solr的架构不适合实时搜索的应用。</p>
<h2 id="实际生产环境测试"><a href="#实际生产环境测试" class="headerlink" title="实际生产环境测试*"></a>实际生产环境测试<a href="http://blog.socialcast.com/realtime-search-solr-vs-elasticsearch/" target="_blank" rel="noopener">*</a></h2><p>下图为将搜索引擎从Solr转到Elasticsearch以后的平均查询速度有了50倍的提升。</p>
<figure class="image-bubble">
                <div class="img-lightbox">
                    <div class="overlay"></div>
                    <img src="http://i.zhcy.tk/images/average_execution_time.jpg" alt="average_execution_time" title>
                </div>
                <div class="image-caption">average_execution_time</div>
            </figure>
<h2 id="Elasticsearch-与-Solr-的比较总结"><a href="#Elasticsearch-与-Solr-的比较总结" class="headerlink" title="Elasticsearch 与 Solr 的比较总结"></a>Elasticsearch 与 Solr 的比较总结</h2><ul>
<li>二者安装都很简单；</li>
<li>Solr 利用 Zookeeper 进行分布式管理，而 Elasticsearch 自身带有分布式协调管理功能;</li>
<li>Solr 支持更多格式的数据，而 Elasticsearch 仅支持json文件格式；</li>
<li>Solr 官方提供的功能更多，而 Elasticsearch 本身更注重于核心功能，高级功能多有第三方插件提供；</li>
<li>Solr 在传统的搜索应用中表现好于 Elasticsearch，但在处理实时搜索应用时效率明显低于 Elasticsearch。</li>
</ul>
<p>Solr 是传统搜索应用的有力解决方案，但 Elasticsearch 更适用于新兴的实时搜索应用。</p>
<h2 id="其他基于Lucene的开源搜索引擎解决方案"><a href="#其他基于Lucene的开源搜索引擎解决方案" class="headerlink" title="其他基于Lucene的开源搜索引擎解决方案"></a>其他基于Lucene的开源搜索引擎解决方案</h2><ol>
<li>直接使用 <a href="http://lucene.apache.org/" target="_blank" rel="noopener">Lucene</a></li>
</ol>
<p>说明：Lucene 是一个 JAVA 搜索类库，它本身并不是一个完整的解决方案，需要额外的开发工作。</p>
<p>优点：成熟的解决方案，有很多的成功案例。apache 顶级项目，正在持续快速的进步。庞大而活跃的开发社区，大量的开发人员。它只是一个类库，有足够的定制和优化空间：经过简单定制，就可以满足绝大部分常见的需求；经过优化，可以支持 10亿+ 量级的搜索。</p>
<p>缺点：需要额外的开发工作。所有的扩展，分布式，可靠性等都需要自己实现；非实时，从建索引到可以搜索中间有一个时间延迟，而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善</p>
<ul>
<li><a href="http://katta.sourceforge.net/" target="_blank" rel="noopener">Katta</a></li>
</ul>
<p>说明：基于 Lucene 的，支持分布式，可扩展，具有容错功能，准实时的搜索方案。</p>
<p>优点：开箱即用，可以与 <a href="http://lib.csdn.net/base/hadoop" target="_blank" rel="noopener">Hadoop</a> 配合实现分布式。具备扩展和容错机制。</p>
<p>缺点：只是搜索方案，建索引部分还是需要自己实现。在搜索功能上，只实现了最基本的需求。成功案例较少，项目的成熟度稍微差一些。因为需要支持分布式，对于一些复杂的查询需求，定制的难度会比较大。</p>
<ul>
<li><a href="http://svn.apache.org/repos/asf/hadoop/mapreduce/trunk/src/contrib/index/README" target="_blank" rel="noopener">Hadoop contrib/index</a></li>
</ul>
<p>说明：Map/Reduce 模式的，分布式建索引方案，可以跟 Katta 配合使用。</p>
<p>优点：分布式建索引，具备可扩展性。</p>
<p>缺点：只是建索引方案，不包括搜索实现。工作在批处理模式，对实时搜索的支持不佳。</p>
<ul>
<li><a href="http://sna-projects.com/" target="_blank" rel="noopener">LinkedIn 的开源方案</a></li>
</ul>
<p>说明：基于 Lucene 的一系列解决方案，包括 准实时搜索 zoie ，facet 搜索实现 bobo ，<a href="http://lib.csdn.net/base/machinelearning" target="_blank" rel="noopener">机器学习</a><a href="http://lib.csdn.net/base/datastructure" target="_blank" rel="noopener">算法</a> decomposer ，摘要存储库 krati ，数据库模式包装 sensei 等等</p>
<p>优点：经过验证的解决方案，支持分布式，可扩展，丰富的功能实现</p>
<p>缺点：与 linkedin 公司的联系太紧密，可定制性比较差</p>
<ul>
<li><a href="https://github.com/tjake/Lucandra" target="_blank" rel="noopener">Lucandra</a></li>
</ul>
<p>说明：基于 Lucene，索引存在 cassandra 数据库中</p>
<p>优点：参考 cassandra 的优点</p>
<p>缺点：参考 cassandra 的缺点。另外，这只是一个 demo，没有经过大量验证</p>
<ul>
<li><a href="https://github.com/akkumar/hbasene" target="_blank" rel="noopener">HBasene</a></li>
</ul>
<p>说明：基于 Lucene，索引存在 <a href="http://lib.csdn.net/base/hbase" target="_blank" rel="noopener">Hbase</a> 数据库中</p>
<p>优点：参考 <a href="http://lib.csdn.net/base/hbase" target="_blank" rel="noopener">hbase</a> 的优点</p>
<p>缺点：参考 HBase 的缺点。另外，在实现中，lucene terms 是存成行，但每个 term 对应的 posting lists 是以列的方式存储的。随着单个 term 的 posting lists 的增大，查询时的速度受到的影响会非常大</p>

        </div>

        <blockquote class="post-copyright">
    
    <div class="content">
        
<span class="post-time">
    最后更新时间：<time datetime="2017-08-22T02:57:58.822Z" itemprop="dateUpdated">2017-08-22 10:57:58</time>
</span><br>


        
        原文链接：<a href="/2017/08/22/my-first-blog/" target="_blank" rel="external">https://lvshen9.gitee.io/2017/08/22/my-first-blog/</a>
        
    </div>
    
    <footer>
        <a href="https://lvshen9.gitee.io">
            <img src="/img/avatar.jpg" alt="我的技术小房间">
            我的技术小房间
        </a>
    </footer>
</blockquote>

        
<div class="page-reward">
    <a id="rewardBtn" href="javascript:;" class="page-reward-btn waves-effect waves-circle waves-light">赏</a>
</div>



        <div class="post-footer">
            
	<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Elasticsearch/">Elasticsearch</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/搜索/">搜索</a></li></ul>


            
<div class="page-share-wrap">
    

<div class="page-share" id="pageShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&title=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&pic=https://lvshen9.gitee.io/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&title=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&source=Elasticsearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。
它可以用于全文搜..." data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://lvshen9.gitee.io/2017/08/22/my-first-blog/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&via=https://lvshen9.gitee.io" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>



    <a href="javascript:;" id="shareFab" class="page-share-fab waves-effect waves-circle">
        <i class="icon icon-share-alt icon-lg"></i>
    </a>
</div>



        </div>
    </div>

    
<nav class="post-nav flex-row flex-justify-between">
  
    <div class="waves-block waves-effect prev">
      <a href="/2017/08/22/hashmap/" id="post-prev" class="post-nav-link">
        <div class="tips"><i class="icon icon-angle-left icon-lg icon-pr"></i> Prev</div>
        <h4 class="title">HashMap的底层实现</h4>
      </a>
    </div>
  

  
    <div class="waves-block waves-effect next">
      <a href="/2017/08/12/Test/" id="post-next" class="post-nav-link">
        <div class="tips">Next <i class="icon icon-angle-right icon-lg icon-pl"></i></div>
        <h4 class="title">Stephen Hawking launches Centre for the Future of Intelligence</h4>
      </a>
    </div>
  
</nav>



    











    <!-- Valine Comments -->
    <div class="comments vcomment" id="comments"></div>
    <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
    <script src="//unpkg.com/valine@latest/dist/Valine.min.js"></script>
    <!-- Valine Comments script -->
    <script>
        var GUEST_INFO = ['nick','mail','link'];
        var guest_info = 'nick,mail,link'.split(',').filter(function(item){
          return GUEST_INFO.indexOf(item) > -1
        });
        new Valine({
            el: '#comments',
            notify: 'false' == 'true',
            verify: 'false' == 'true',
            appId: "dy9kXHwg5jQUlLryQmpjWRlM-gzGzoHsz",
            appKey: "P9Nh39Ol0JbMMiYqNGHEP3ml",
            avatar: "mm",
            placeholder: "Just go go",
            guest_info: guest_info.length == 0 ? GUEST_INFO : guest_info,
            pageSize: "10"
        })
    </script>
    <!-- Valine Comments end -->







</article>

<div id="reward" class="page-modal reward-lay">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <h3 class="reward-title">
        <i class="icon icon-quote-left"></i>
        谢谢大爷~
        <i class="icon icon-quote-right"></i>
    </h3>
    <div class="reward-content">
        
        <div class="reward-code">
            <img id="rewardCode" src="https://lvshen9.github.io/blog2/pay/weixin.jpg" alt="打赏二维码">
        </div>
        
        <label class="reward-toggle">
            <input id="rewardToggle" type="checkbox" class="reward-toggle-check"
                data-wechat="https://lvshen9.github.io/blog2/pay/weixin.jpg" data-alipay="https://lvshen9.github.io/blog2/pay/zhifu.jpg">
            <div class="reward-toggle-ctrol">
                <span class="reward-toggle-item wechat">微信</span>
                <span class="reward-toggle-label"></span>
                <span class="reward-toggle-item alipay">支付宝</span>
            </div>
        </label>
        
    </div>
</div>



</div>

        <footer class="footer">
    <div class="top">
        
<p>
    <span id="busuanzi_container_site_uv" style='display:none'>
        站点总访客数：<span id="busuanzi_value_site_uv"></span>
    </span>
    <span id="busuanzi_container_site_pv" style='display:none'>
        站点总访问量：<span id="busuanzi_value_site_pv"></span>
    </span>
</p>


        <p>
            
            <span>博客内容遵循 <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议</a></span>
        </p>
    </div>
    <div class="bottom">
        <p><span>我的技术小房间 &copy; 2015 - 2020</span>
            <span>
                
                Power by <a href="http://hexo.io/" target="_blank">Hexo</a> Theme <a href="https://github.com/yscoder/hexo-theme-indigo" target="_blank">indigo</a>
            </span>
        </p>
    </div>
</footer>

    </main>
    <div class="mask" id="mask"></div>
<a href="javascript:;" id="gotop" class="waves-effect waves-circle waves-light"><span class="icon icon-lg icon-chevron-up"></span></a>



<div class="global-share" id="globalShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&title=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&pic=https://lvshen9.gitee.io/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&title=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&source=Elasticsearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。
它可以用于全文搜..." data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://lvshen9.gitee.io/2017/08/22/my-first-blog/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《搜索引擎选择:Elasticsearch与Solr》 — Lvshen's Blog&url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/&via=https://lvshen9.gitee.io" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://lvshen9.gitee.io/2017/08/22/my-first-blog/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>


<div class="page-modal wx-share" id="wxShare">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <p>扫一扫，分享到微信</p>
    <img src="//api.qrserver.com/v1/create-qr-code/?data=https://lvshen9.gitee.io/2017/08/22/my-first-blog/" alt="微信分享二维码">
</div>




    <script src="//cdn.bootcss.com/node-waves/0.7.4/waves.min.js"></script>
<script>
var BLOG = { ROOT: '/', SHARE: true, REWARD: true };


</script>

<script src="//unpkg.com/hexo-theme-material-indigo@latest/js/main.min.js"></script>


<div class="search-panel" id="search-panel">
    <ul class="search-result" id="search-result"></ul>
</div>
<template id="search-tpl">
<li class="item">
    <a href="{path}" class="waves-block waves-effect">
        <div class="title ellipsis" title="{title}">{title}</div>
        <div class="flex-row flex-middle">
            <div class="tags ellipsis">
                {tags}
            </div>
            <time class="flex-col time">{date}</time>
        </div>
    </a>
</li>
</template>

<script src="//unpkg.com/hexo-theme-material-indigo@latest/js/search.min.js" async></script>






<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>



<script>
(function() {
    var OriginTitile = document.title, titleTime;
    document.addEventListener('visibilitychange', function() {
        if (document.hidden) {
            document.title = '死鬼去哪里了！';
            clearTimeout(titleTime);
        } else {
            document.title = '(つェ⊂)咦!又好了!';
            titleTime = setTimeout(function() {
                document.title = OriginTitile;
            },2000);
        }
    });
})();
</script>



</body>
</html>
